package cn.edu360

import org.apache.log4j.{Level, Logger}
import org.apache.spark.{SparkConf, SparkContext}
//import org.apache.spark.sql.{DataFrame, Dataset, SQLContext, SparkSession}
import org.apache.spark.sql._

object DMPNo1 {
  // 设置日志级别为 Warn
  val logger = Logger.getLogger("org").setLevel(Level.WARN)

  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf()
      .set("spark.sql.parquet.compression.codec","snappy")//压缩
      .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")//序列化
    //如果存在直接拿来使用，如果不存在 创建
    val spark: SparkSession = SparkSession.builder()
      //local模式运行的参数设置
      .master("local[*]")
      .appName(this.getClass.getSimpleName)
      .getOrCreate()//得到SparkSession
    //可以从SparkSession对象中获取SparkSQl对象  SparkContext对象
    //导入隐式转换
    import spark.implicits._
    val sc: SparkContext = spark.sparkContext
    val sqlContext: SQLContext = spark.sqlContext
    //读取数据统一的编程入口
    val file: Dataset[String] = spark.read.textFile("D:\\小牛π班Java大数据\\项目\\项目二\\资料PDF\\dmp.log")
 //  file.show(10)
     file.map(t => {
      val split: Array[String] = t.split(",")
      split
    })
   //qigeResult.printSchema()
    // DataFrames可以保存为Parquet文件，维护模式信息  将数据转换成 parquet 文件格式
   // file.write.parquet("D:\\小牛π班Java大数据\\项目\\项目二\\资料PDF\\dmp.parquet")
    //阅读上面创建的拼花文件
    // Parquet文件是自描述的，所以模式是保留的
    //加载Parquet文件的结果也是一个DataFrame
    val parquetFileDF = spark.read.parquet("D:\\小牛π班Java大数据\\项目\\项目二\\资料PDF\\dmp.parquet")
    //自定义schema信息
   // parquetFileDF.toDF("")
    // Parquet文件也可用于创建临时视图，然后用于SQL语句
    parquetFileDF.createOrReplaceTempView("parquetFile")
   val namesDF = spark.sql("SELECT * FROM parquetFile ")
   // namesDF.show(3)


  }
}
